{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 05\n",
    "\n",
    "# 平面直角坐标系\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ea9764f-8cc7-484e-bb04-caeaf5f42400",
   "metadata": {},
   "source": [
    "这段代码使用Python的Matplotlib和Numpy库，绘制了一个二维平面图并在其中标记了特定的点和标签。代码主要分为以下几步：\n",
    "\n",
    "1. **定义数据点**：首先定义了$x$和$y$坐标的列表，分别是$x = [4, 0, -5, -4, 6, 0]$和$y = [2, -2, 7, -6, -5, 0]$。这意味着在平面上有6个点，其坐标分别为$(4, 2)$、$(0, -2)$、$(-5, 7)$、$(-4, -6)$、$(6, -5)$和$(0, 0)$。同时定义了一个标签列表$labels = ['A', 'B', 'C', 'D', 'E', 'O']$，用于对每个点进行标记。\n",
    "\n",
    "2. **创建图表和坐标轴**：调用$plt.subplots()$创建一个图形对象和坐标轴对象。$fig$是图形的整体容器，$ax$是具体的坐标轴。\n",
    "\n",
    "3. **绘制点和标签**：使用$plt.plot(x, y, 'x')$在平面上以“x”符号绘制这些点。然后，通过循环使用$plt.text(i, j + 0.5, label + ' ({}, {})'.format(i, j))$来在每个点的正上方$(j + 0.5)$位置显示标签，标签格式为“标签名 (x坐标, y坐标)”。\n",
    "\n",
    "4. **设置坐标轴标签**：$plt.xlabel('x')$和$plt.ylabel('y')$为$x$轴和$y$轴分别添加了标签\"x\"和\"y\"。\n",
    "\n",
    "5. **绘制$x$轴和$y$轴的基准线**：通过$plt.axhline(y=0, color='k', linestyle='-')$和$plt.axvline(x=0, color='k', linestyle='-')$在$y=0$和$x=0$位置分别绘制了水平和垂直基准线，用黑色$k$表示，线条样式为实线。这些基准线相当于坐标系的$X$轴和$Y$轴。\n",
    "\n",
    "6. **设置刻度范围**：代码$plt.xticks(np.arange(-8, 8 + 1, step=1))$和$plt.yticks(np.arange(-8, 8 + 1, step=1))$分别设置了$x$轴和$y$轴的刻度范围为$[-8, 8]$，步长为1。这意味着每隔一个单位会标记一个刻度，使得刻度更加细致。\n",
    "\n",
    "7. **保持坐标比例**：$plt.axis('scaled')$确保$x$轴和$y$轴单位比例一致，即一个单位在$x$轴和$y$轴上显示的长度相同，避免图形的失真。\n",
    "\n",
    "8. **设置显示范围**：$ax.set_xlim(-8, 8)$和$ax.set_ylim(-8, 8)$进一步限制了图形的显示范围，确保$x$和$y$轴的范围都在$[-8, 8]$之间，使得图形更加集中和对称。\n",
    "\n",
    "9. **隐藏坐标轴边框**：代码$ax.spines['top'].set_visible(False)$、$ax.spines['bottom'].set_visible(False)$、$ax.spines['left'].set_visible(False)$和$ax.spines['right'].set_visible(False)$将上、下、左、右四个边框设置为不可见，使得整个坐标区域无边框，图形更加简洁。\n",
    "\n",
    "10. **添加网格线**：最后，通过$ax.grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])$在图形中添加了网格线，使用灰色虚线$[0.5,0.5,0.5]$作为颜色，网格线宽度设置为$0.25$。这样在每个刻度位置会生成一条网格线，增强可读性。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62b3592b-563b-4a37-b501-bf814119ab77",
   "metadata": {},
   "source": [
    "## 导入库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7a1ddb77-e87f-4fd7-a863-ad79e854a79f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt  # 导入matplotlib库，用于绘制图形\n",
    "import numpy as np  # 导入numpy库，用于数值计算"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dead50f2-3453-4b83-bc71-f42cd1298f48",
   "metadata": {},
   "source": [
    "## 数据定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "bc5e5a58-ab4c-4f79-96b1-a0e19b1d601a",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = [4,  0, -5, -4,  6, 0]  # 定义x坐标的列表\n",
    "y = [2, -2,  7, -6, -5, 0]  # 定义y坐标的列表\n",
    "labels = ['A', 'B', 'C', 'D', 'E', 'O']  # 定义每个点的标签列表"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5fdde71-8deb-43dd-acdd-77b88ec494b2",
   "metadata": {},
   "source": [
    "## 创建图表和坐标轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0f14c1e8-48ad-4b4c-87f8-bdb0990a9dd7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()  # 创建图形和坐标轴对象\n",
    "\n",
    "## 绘制点\n",
    "plt.plot(x, y, 'x')  # 使用“x”标记在坐标轴上绘制点\n",
    "\n",
    "## 添加标签\n",
    "for label, i, j in zip(labels, x, y):\n",
    "    plt.text(i, j+0.5, label + ' ({}, {})'.format(i, j))  # 在每个点上方添加标签和坐标\n",
    "\n",
    "## 设置坐标轴标签\n",
    "plt.xlabel('x')  # 设置x轴标签\n",
    "plt.ylabel('y')  # 设置y轴标签\n",
    "\n",
    "## 绘制x轴和y轴的水平和垂直线\n",
    "plt.axhline(y=0, color='k', linestyle='-')  # 在y=0处绘制水平线\n",
    "plt.axvline(x=0, color='k', linestyle='-')  # 在x=0处绘制垂直线\n",
    "\n",
    "## 设置刻度\n",
    "plt.xticks(np.arange(-8, 8 + 1, step=1))  # 设置x轴的刻度范围为-8到8，步长为1\n",
    "plt.yticks(np.arange(-8, 8 + 1, step=1))  # 设置y轴的刻度范围为-8到8，步长为1\n",
    "\n",
    "## 设置坐标轴比例\n",
    "plt.axis('scaled')  # 设置坐标轴比例，使x轴和y轴的比例一致\n",
    "\n",
    "## 设置坐标轴范围\n",
    "ax.set_xlim(-8, 8)  # 设置x轴的显示范围为-8到8\n",
    "ax.set_ylim(-8, 8)  # 设置y轴的显示范围为-8到8\n",
    "\n",
    "## 隐藏坐标轴边框\n",
    "ax.spines['top'].set_visible(False)  # 隐藏顶部边框\n",
    "ax.spines['bottom'].set_visible(False)  # 隐藏底部边框\n",
    "ax.spines['left'].set_visible(False)  # 隐藏左侧边框\n",
    "ax.spines['right'].set_visible(False)  # 隐藏右侧边框\n",
    "\n",
    "## 添加网格\n",
    "ax.grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])  # 添加虚线网格，设置网格线样式和颜色"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
